package main

import (
	"github.com/hajimehoshi/ebiten/v2"
	"github.com/hajimehoshi/ebiten/v2/ebitenutil"
	"log"
)

type Alien struct {
	Image  *ebiten.Image
	Width  int
	Height int
	X      float64
	Y      float64
	Speed  float64
}

func NewAlien(cfg *Config) *Alien {
	img, _, err := ebitenutil.NewImageFromFile("gameDemo/image/alien.png")
	if err != nil {
		log.Fatal(err)
	}
	width, height := img.Size()
	return &Alien{
		Image:  img,
		Width:  width,
		Height: height,
		X:      0,
		Y:      0,
		Speed:  cfg.AlienSpeed,
	}
}

func (alien *Alien) Draw(screen *ebiten.Image) {

	op := &ebiten.DrawImageOptions{}
	op.GeoM.Translate(alien.X, alien.Y)
	screen.DrawImage(alien.Image, op)

}
func (g *Game) CreateAlien() {
	alien := NewAlien(g.Config)
	availableSpaceX := g.Config.ScreenWidth - 2*alien.Width
	numAliens := availableSpaceX / (2 * alien.Width)
	//fmt.Println(availableSpaceX, numAliens)
	for i := 0; i < numAliens; i++ {

		//fmt.Println(i)

		alien := NewAlien(g.Config)
		alien.X = float64(alien.Width + 2*alien.Width*i)

		g.addAlien(alien)

	}
}
